package br.com.tabletcaixa.venda;

import java.util.ArrayList;
import java.util.List;

import br.com.tabletcaixa.db.DBHelper;
import br.com.tabletcaixa.orcamento.OrcamentoVO;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.widget.Toast;

public class VendaDAO {

	private SQLiteDatabase db;
	private DBHelper dbHelper;

	private String[] campos = { DBHelper.VENDA_ID, DBHelper.VENDA_NUMERO_VENDA,
			DBHelper.VENDA_CODIGO, DBHelper.VENDA_DESCRICAO,
			DBHelper.VENDA_PRECO, DBHelper.VENDA_PRECO_TOTAL,
			DBHelper.VENDA_QUANTIDADE, DBHelper.VENDA_CLIENTE, 
			DBHelper.VENDA_VENDEDOR };

	public VendaDAO(Context context) {

		dbHelper = new DBHelper(context);

	}

	public void conectar() {

		db = dbHelper.getWritableDatabase();

	}

	public void desconectar() {

		dbHelper.close();

	}

	public long cadastrarVenda(VendaVO venda) {

		try {

			ContentValues values = new ContentValues();
			values.put(DBHelper.VENDA_ID, venda.getId());
			values.put(DBHelper.VENDA_NUMERO_VENDA, venda.getNumeroVenda());
			values.put(DBHelper.VENDA_CODIGO, venda.getCodigo());
			values.put(DBHelper.VENDA_DESCRICAO, venda.getDescricao());
			values.put(DBHelper.VENDA_PRECO, venda.getPreco());
			values.put(DBHelper.VENDA_PRECO_TOTAL, venda.getPrecoTotal());
			values.put(DBHelper.VENDA_QUANTIDADE, venda.getQuantidade());
			values.put(DBHelper.VENDA_CLIENTE, venda.getCliente());
			values.put(DBHelper.VENDA_VENDEDOR, venda.getVendedor());

			return db.insert(DBHelper.TBL_VENDA, null, values);

		} catch (Exception e) {

			e.printStackTrace();
			e.getMessage();

		}

		return 0;

	}
	
	public long alterarVenda(VendaVO venda){
		
		try {

			long id = venda.getId();
			
			ContentValues values = new ContentValues();
			values.put(DBHelper.VENDA_ID, venda.getId());
			values.put(DBHelper.VENDA_NUMERO_VENDA, venda.getNumeroVenda());
			values.put(DBHelper.VENDA_CODIGO, venda.getCodigo());
			values.put(DBHelper.VENDA_DESCRICAO, venda.getDescricao());
			values.put(DBHelper.VENDA_PRECO, venda.getPreco());
			values.put(DBHelper.VENDA_PRECO_TOTAL, venda.getPrecoTotal());
			values.put(DBHelper.VENDA_QUANTIDADE, venda.getQuantidade());
			values.put(DBHelper.VENDA_CLIENTE, venda.getCliente());
			values.put(DBHelper.VENDA_VENDEDOR, venda.getVendedor());

			return db.update(DBHelper.TBL_VENDA, values, DBHelper.VENDA_ID + " = " + id, null);

		} catch (Exception e) {

			e.printStackTrace();
			e.getMessage();

		}

		return 0;
		
	}

	public long excluirVenda(Context context, VendaVO venda) {

		try {

			long id = venda.getId();

			return db.delete(DBHelper.TBL_VENDA, DBHelper.VENDA_ID
					+ " = " + id, null);

		} catch (Exception e) {

			Toast.makeText(context,
					"Erro ao excluir venda: /n" + e.getMessage(),
					Toast.LENGTH_LONG).show();

		}

		return 0;

	}

	public void excluirTodaVenda(){
		
		db.execSQL("DELETE FROM " + DBHelper.TBL_VENDA);
		
	}
	
	public List<VendaVO> consultarVenda() {

		List<VendaVO> lstVenda = new ArrayList<VendaVO>();
	
		Cursor cursor = db.query(DBHelper.TBL_VENDA, campos,
				null, null, null, null, null);
		
		cursor.moveToFirst();

		while (!cursor.isAfterLast()) {

			VendaVO lVenda = cursorToVenda(cursor);
			lstVenda.add(lVenda);
			cursor.moveToNext();

		}

		cursor.close();
		return lstVenda;

	}

	private VendaVO cursorToVenda(Cursor cursor) {

		VendaVO venda = new VendaVO();
		venda.setId(cursor.getInt(0));
		venda.setNumeroVenda(cursor.getString(1));
		venda.setCodigo(cursor.getString(2));
		venda.setDescricao(cursor.getString(3));
		venda.setPreco(cursor.getDouble(4));
		venda.setPrecoTotal(cursor.getDouble(5));
		venda.setQuantidade(cursor.getInt(6));
		venda.setCliente(cursor.getString(7));
		venda.setVendedor(cursor.getString(8));

		return venda;

	}
	
	public long buscarCodigoUltimaVenda(){
       
		try {
            
        	Cursor cursor = db.query(DBHelper.TBL_VENDA, new String[]{"MAX(" + DBHelper.VENDA_ID + ") AS ID"}, 
        			null, null, null, null, null);
        	
			//Cursor cursor = db.rawQuery("SELECT MAX(_id) AS ID FROM venda", null);
			
            if(cursor.moveToLast()){
                return cursor.getLong(0);
            }
            
        } catch (Exception e) {
           
        	e.printStackTrace();
        	
        }
        
        return 0;
    }

}
